HTTPS et TLS 1.3
Sécuriser les communications sur Internet
Notions théoriques
Pourquoi HTTPS est-il essentiel ?
Lorsqu’un utilisateur navigue sur un site Web, les données échangées entre son navigateur et le serveur peuvent être interceptées. En utilisant un protocole sécurisé comme HTTPS, ces échanges sont chiffrés, garantissant :
- La confidentialité : Empêcher un attaquant d’écouter les communications.
- L’intégrité : Assurer que les données ne sont pas modifiées en transit.
- L’authenticité : Vérifier que le site visité est bien celui qu’il prétend être.
Différence entre HTTP et HTTPS
- HTTP (HyperText Transfer Protocol) : Protocole non sécurisé, les données circulent en clair.
- HTTPS (HTTP Secure) : Version sécurisée d’HTTP qui utilise TLS pour chiffrer les communications.
Le rôle de TLS 1.3
TLS (Transport Layer Security) est le protocole de chiffrement utilisé par HTTPS. La version TLS 1.3 apporte plusieurs améliorations :
- Un chiffrement plus rapide et plus sécurisé en supprimant les anciens algorithmes vulnérables.
- Un handshake plus court : Moins d’échanges entre le client et le serveur, ce qui accélère la connexion.
- Une meilleure confidentialité : Les informations sensibles (comme l’identité du serveur) sont mieux protégées.
Comment fonctionne une connexion HTTPS avec TLS 1.3 ?
- Le client (navigateur) envoie une requête au serveur pour établir une connexion sécurisée.
- Le serveur répond avec son certificat SSL/TLS, qui contient sa clé publique.
- Le client vérifie le certificat pour s’assurer de l’identité du serveur.
- Un échange de clés sécurisé a lieu pour établir un chiffrement de session.
- Les données sont ensuite échangées de manière chiffrée entre le client et le serveur.
Les certificats SSL/TLS
Un site HTTPS possède un certificat SSL/TLS délivré par une autorité de certification (CA). Ce certificat garantit que le site est authentique.
Il existe plusieurs types de certificats :
- DV (Domain Validation) : Vérifie uniquement que le propriétaire possède le domaine.
- OV (Organization Validation) : Vérifie l’identité de l’organisation.
- EV (Extended Validation) : Niveau de validation le plus strict, affichant un indicateur de sécurité renforcé dans le navigateur.
Exemple pratique
Il est possible de configurer un serveur Web pour utiliser HTTPS avec TLS 1.3 en générant un certificat SSL avec Let's Encrypt et en configurant Apache ou Nginx.
1. Installer Certbot pour obtenir un certificat SSL
Certbot est un outil permettant d’obtenir un certificat SSL gratuitement avec Let's Encrypt.
sudo apt update
sudo apt install certbot python3-certbot-apache
2. Générer un certificat SSL
sudo certbot --apache -d monsite.com -d www.monsite.com
Certbot va :
- Vérifier que le domaine appartient bien à l’utilisateur.
- Générer un certificat SSL valide.
- Configurer automatiquement Apache pour utiliser HTTPS.
3. Vérifier que TLS 1.3 est activé
Dans la configuration d’Apache (/etc/apache2/mods-available/ssl.conf
), s’assurer que TLS 1.3 est bien activé :
SSLProtocol -all +TLSv1.3
4. Redémarrer Apache
sudo systemctl restart apache2
Le site est maintenant accessible en HTTPS avec TLS 1.3.
Test de mémorisation/compréhension
TP pour réfléchir et résoudre des problèmes
Objectif du TP
Configurer un serveur Web local avec HTTPS et TLS 1.3 en utilisant Apache et Certbot, puis tester la connexion sécurisée.
Étape 1 : Installer Apache et Certbot
Un serveur Web Apache est nécessaire pour héberger un site, et Certbot permet d’obtenir un certificat SSL/TLS gratuitement.
Instructions
- Mettre à jour la liste des paquets pour s’assurer d’avoir les dernières versions disponibles :
sudo apt update && sudo apt upgrade -y
- Installer Apache si ce n’est pas déjà fait :
sudo apt install apache2 -y
- Vérifier qu’Apache fonctionne en ouvrant un navigateur et en accédant à
http://localhost
ouhttp://<adresse-IP-du-serveur>
. - Installer Certbot et son module pour Apache :
sudo apt install certbot python3-certbot-apache -y
- Vérifier que Certbot est bien installé en exécutant :
certbot --version
Vérifier si :
- Apache est installé et accessible via
http://localhost
. - Certbot est installé et prêt à être utilisé.
Étape 2 : Obtenir un certificat SSL/TLS avec Let's Encrypt
Let's Encrypt fournit des certificats SSL gratuits et automatisés.
Instructions
- S’assurer que le domaine pointe vers l’adresse IP du serveur (si le test est réalisé sur un serveur distant).
- Exécuter la commande suivante en remplaçant
monsite.com
par le nom de domaine :sudo certbot --apache -d monsite.com -d www.monsite.com
- Suivre les instructions affichées :
- Accepter les conditions d’utilisation.
- Choisir si les redirections HTTP vers HTTPS doivent être activées.
- Attendre la confirmation de Certbot indiquant que le certificat a été généré et installé avec succès.
- Vérifier que le certificat est bien installé en accédant à
https://monsite.com
depuis un navigateur.
Vérifier si :
- Le site est maintenant accessible en HTTPS.
- Le certificat SSL est valide et reconnu par le navigateur.
Étape 3 : Configurer Apache pour utiliser HTTPS et TLS 1.3
Par défaut, Certbot configure automatiquement Apache pour utiliser HTTPS, mais il est nécessaire de s’assurer que TLS 1.3 est bien activé.
Instructions
- Ouvrir le fichier de configuration SSL d’Apache :
sudo nano /etc/apache2/mods-available/ssl.conf
- Rechercher la ligne contenant
SSLProtocol
et la modifier pour activer uniquement TLS 1.3 :SSLProtocol -all +TLSv1.3
- Enregistrer et fermer le fichier (
CTRL + X
, puisY
etEntrée
). - Redémarrer Apache pour appliquer les modifications :
sudo systemctl restart apache2
- Vérifier que TLS 1.3 est bien utilisé en exécutant la commande suivante :
openssl s_client -connect monsite.com:443 -tls1_3
- Si la connexion est établie avec TLS 1.3, la sortie affichera
Protocol: TLSv1.3
.
- Si la connexion est établie avec TLS 1.3, la sortie affichera
Vérifier si :
- Apache est configuré pour forcer l’utilisation de TLS 1.3.
- La connexion est sécurisée et utilise la dernière version du protocole TLS.
Étape 4 : Tester la connexion sécurisée
Une fois la configuration terminée, il est important de vérifier que le site fonctionne correctement en HTTPS et que TLS 1.3 est bien actif.
Instructions
- Ouvrir un navigateur et accéder au site en tapant
https://monsite.com
. - Vérifier que le cadenas sécurisé apparaît dans la barre d’adresse.
- Cliquer sur le cadenas et afficher les informations du certificat.
- Vérifier que TLS 1.3 est bien utilisé en consultant les détails de la connexion.
- Tester la redirection automatique de HTTP vers HTTPS en accédant à
http://monsite.com
et en s’assurant que l’URL est bien redirigée vershttps://monsite.com
.
Vérifier si :
- Le site est accessible uniquement en HTTPS.
- Le certificat SSL est valide et reconnu.
- TLS 1.3 est bien utilisé pour sécuriser les échanges.